/*
* Copyright (c) 2009, Ander Ruiz & Alexander Benito
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 * - Neither the name of Mauricio Aguilar O. nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @author: Ander Ruiz y Alexander Benito
 * email  : anderruiz@yahoo.es
 * Date   : May 31 , 2009
 *
 */

package org.transFX.lang;

import javafx.scene.Node;
import javafx.stage.StageStyle;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.Group;
import java.lang.System;
import javafx.scene.image.ImageView;
import javafx.scene.image.Image;


/**
 * @author Ander
 */

public class JFXUtils {

}

public function getNodeWidth(node:Node):Number
{
    if(node!=null)
        return node.boundsInLocal.width;
    return 0;
}

public function getNodeHeight(node:Node):Number
{
    if(node!=null)
        return node.boundsInLocal.height;
    return 0;
}

public function printNode(node:Node)
{
    printNode(node.id, node);
}

public function printNode(id:String, node:Node)
{
    println("Id:{id}-->Tx:{node.translateX} Ty:{node.translateY} W:{getNodeWidth(node)} H:{getNodeHeight(node)}");
}

public function getAllSubNodes(scene:Scene):Node []
{
    var nodes:Node [];
    var sceneNodes:Node [] = scene.content;
    for (sceneNode:Node in sceneNodes)
    {
        insert sceneNode into nodes;
        if(sceneNode instanceof Group)
        {
            var groupNodes:Node[] = getAllGroupNodes(sceneNode as Group);
            for (groupNode in groupNodes)
            {
                insert groupNode into nodes;
            }
        }
    }
    return nodes;

}

function getAllGroupNodes(group:Group):Node []
{
    var nodes:Node [];
    var groupNodes:Node[] = group.content;
    for (groupNode in groupNodes)
    {
        insert groupNode into nodes;
        if(groupNode instanceof Group)
        {
            var subNodes = getAllGroupNodes(groupNode as Group);
            for (subNode in subNodes)
            {
                insert subNode into nodes;
            }
        }
    }
    return nodes;
}



public function showRun(node:Node):Void
{
            var stage = Stage
            {
                visible: true
                width: 800;
                height: 600;
                style: StageStyle.UNDECORATED
                title: "MainFrame";
                scene: Scene{
                    content: [node]
                    };
            }
}



